Java 2 Enterprise Edition (“J2EE”) is a specification for building and deploying distributed enterprise applications. J2EE is based on a multi-tiered architecture in which server side program code is divided into several layers including a “presentation” layer and a “business logic” layer.
The presentation layer may be implemented as a Web container and the business layer may be implemented as an Enterprise Java Bean (“EJB”) container. Containers are runtime environments which provide standard common services to runtime components. For example, the Java Naming and Directory Interface (“JNDI”) is a service that provides application components with methods for performing standard naming and directory services. Containers also provide unified access to enterprise information systems such as relational databases through the Java Database Connectivity (“JDBC”) service, and legacy computer systems through the J2EE Connector Architecture (“JCA”) service. In addition, containers provide a declarative mechanism for configuring application components at deployment time through the use of deployment descriptors associated with the components or annotations provided in the components (as described in greater detail below).
Each layer of the J2EE architecture includes multiple containers. The Web container, for example, is itself comprised of a servlet container for processing servlets and a Java Server Pages (“JSP”) container for processing Java server pages. The EJB container includes three different containers for supporting three different types of enterprise Java beans: session beans, entity beans, and message-driven beans. A more detailed description of J2EE containers and J2EE services can be found in RAGAE GHALY AND KRISHNA KOTHAPALLI, SAMS TEACH YOURSELF EJB IN 21 DAYS (2003) (see, e.g., pages 353-376).